import axios from 'axios'

const instance = axios.create({
  baseURL: 'http://localhost:8080', // 后端统一入口
})

instance.interceptors.request.use(config => {
  const token = localStorage.getItem('jwt_token')
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
})

instance.interceptors.response.use(
  response => response.data,
  error => {
    if (error.response) {
      // 有响应但状态码不在2xx范围内
      const { status, data } = error.response
      let message = '请求错误'
      
      if (status === 401) {
        message = '未授权，请重新登录'
        console.log('token expired')
        // 移除token和跳转放到调用处处理
        return Promise.reject({
          status,
          message,
          data: data || null,
          isAuthError: true // 添加认证错误标记
        })
      }
      switch (status) {
        case 403:
          message = '拒绝访问'
          break
        case 404:
          message = '请求资源不存在'
          break
        case 500:
          message = '服务器错误'
          break
        default:
          message = data?.message || error.message || '未知错误'
      }
      
      return Promise.reject({
        status,
        message,
        data: data || null
      })
    } else if (error.request) {
      // 请求已发出但没有响应
      return Promise.reject({
        status: null,
        message: '网络错误，请检查您的连接',
        data: null
      })
    } else {
      // 请求配置错误
      return Promise.reject({
        status: null,
        message: error.message,
        data: null
      })
    }
  }
)

export default instance